【Update】วิธีตั้งค่ากำหนดการ Start EC2 Instance อัตโนมัติด้วย Amazon EventBridge
สวัสดีครับ ผมป๊อปครับ ครั้งนี้จะมา 【Update】วิธีตั้งค่ากำหนดการ Start EC2 Instance อัตโนมัติด้วย Amazon EventBridge ในหัวข้อ วิธีตั้งค่ากำหนดการ Start EC2 Instance เนื่องจากว่าหน้า AWS Console ของฟังก์ชัน Rules ใน Amazon EventBridge มีการ Update
สิ่งที่ต้องมี
ก่อนอื่นต้องทำการติดตั้ง EC2 Instance สามารถดูวิธีการทำได้ที่คำอธิบายและลิงก์ด้านล่างนี้
※ชื่อ Key Pairs และ EC2 Instance ของบทความนี้คือtinnakorn-schedule-start
※หัวข้อ ❌3. Connect to EC2 by PuTTY ไม่ต้องทำ
※Link : วิธีติดตั้ง Amazon Linux บน EC2 และเชื่อมต่อเซิร์ฟเวอร์ด้วยโปรแกรม PuTTy
เมื่อติดตั้ง EC2 Instance เสร็จเรียบร้อยแล้ว ให้ทำการเชื่อมโยง Elastic IP ไปยัง EC2 Instance เพื่อไม่ให้ IP Address เกิดการเปลี่ยนแปลง สามารถทำตามขั้นตอนได้ที่ลิงก์ด้านล่างนี้ได้เลย
เมื่อทำวิธีตามด้านบนนี้เสร็จเรียบร้อยแล้ว ให้ Stop EC2 Instance เตรียมไว้
การสร้าง Rule ใน IAM
เมื่อ Stop EC2 Instance เตรียมไว้แล้ว ให้สร้าง Role ใน IAM ก่อน เพื่อนำไปใช้ในขั้นตอนของ วิธีตั้งค่ากำหนดการ Start EC2 Instance
เข้ามาที่ Service IAM โดยค้นหา?︎ IAM
» เลือกIAM
มาที่เมนูด้านซ้าย เลือกRoles
คลิกCreate role
การตั้งค่า Step 1 : Select trusted entity นี้คือ:
Trusted entity type
» เลือกAWS service
Use case
» Common use cases:EC2
» คลิกNext
การตั้งค่า Step 2 : Add permissions นี้คือ:
Add permissions
» ค้นหา Permissions policies:?︎ AmazonSSMAutomationRole
+ Enter
» Check✅
ที่ชื่อ AmazonSSMAutomationRole
» คลิกNext
การตั้งค่า Step 3 : Name, review, and create นี้คือ:
» Role name:tinnakorn-schedule-start-event-ssm-automation-role
(ชื่ออะไรก็ได้)
เลื่อนลงมาด้านล่างสุด คลิกCreate role
ค้นหาชื่อ Role ที่สร้างไปเมื่อสักครู่นี้:?︎ tinnakorn-schedule-start-event-ssm-automation-role
+ Enter
จากนั้นคลิกที่ Role name ของเรา
คลิกที่หัวข้อTrust relationships
ตามด้วยเลือกEdit trust policy
แก้ไข Code ที่ "Service": โดยการเพิ่ม"ssm.amazonaws.com"
ลงไป
เพื่อให้ง่ายต่อการแก้ไข แนะนำให้ลบ Code เก่าในช่อง Edit trust policy ออกให้หมดและ Copy Code ด้านล่างนี้วางลงไปแทนที่
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ssm.amazonaws.com", "ec2.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
เลื่อนลงมาด้านล่างสุด คลิกUpdate policy
มาดูที่หัวข้อTrust relationships
อีกครั้ง จะเห็นว่าแก้ไข Code เสร็จเรียบร้อยแล้ว
วิธีตั้งค่ากำหนดการ Start EC2 Instance
เราจะสาธิตวิธีตั้งค่ากำหนดการ Start EC2 Instance ใน Service Amazon EventBridge โดยจะใช้ชื่อว่าtinnakorn-schedule-start
ซึ่งเป็นชื่อเดียวกับ Instance นั่นเอง
ค้นหา?︎ Amazon EventBridge
» เลือกAmazon EventBridge
เมื่อเข้ามาที่ Amazon EventBridge แล้ว มาที่เมนูด้านซ้าย เลือกRules
มาที่หัวข้อ Rules คลิกCreate rule
เมื่อเข้ามาหน้า Create rule แล้ว สามารถดูการตั้งค่านี้เป็นแนวทางได้เลย
การตั้งค่า Step 1 Define rule detail นี้คือ:
» Name:tinnakorn-schedule-start
» Description - optional:tinnakorn-schedule-start
» เลือก⚫ Schedule
» คลิกNext
การตั้งค่า Step 2 Define schedule นี้คือ:
» เลื่อนลงมาหัวข้อ Schedule pattern ด้านล่างสุด
» Cron expression: ใส่วันที่และเวลาที่ต้องการ Start โดยในแต่ละช่องจะมีข้อความบอกอยู่ด้านล่าง เช่น20 8 * * ? *
(ซึ่งเวลาประเทศไทยคือ03:20
นาที ส่วนวันที่ถ้าเป็น*
ก็จะหมายถึงวันปัจจุบัน)
» เมื่อใส่วันที่และเวลาแล้ว จะมี Next 10 trigger date(s) ปรากฎขึ้นมา เราสามารถเลือก:Local time zone ▼
เพื่อดูเวลาประเทศไทยได้
» คลิกNext
สามารถศึกษาเรื่อง Cron expression เพิ่มเติมได้ที่ : https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html
การตั้งค่า Step 3 Select target(s) นี้คือ:
» เลือก Select a target:System Manager Automation ▼
» Document:AWS-StartEC2Instance ▼
มาที่หน้า EC2 Instance ของเรา คลิก❐
เพื่อ Copy Instance ID แล้วนำไปบันทึกไว้ที่ Notepad ก่อนก็ได้
มาที่ IAM แล้วเข้ามาที่ Role ของเรา ตัวอย่างนี้คือtinnakorn-schedule-start-event-ssm-automation-role
จากนั้น Copy ARN แล้วนำไปบันทึกไว้ที่ Notepad ก่อนก็ได้
เลื่อนลงมาด้านล่างดูที่หัวข้อ▼ Configure automation parameter(s)
นำ Instance ID กับ ARN มาวางตามตัวอย่างดังนี้
» InstanceId*:i-*****************
เมื่อวางไปแล้วจะเป็น["i-*****************"]
อัตโนมัติ
» AutomationAssumeRole*:arn:aws:iam::************:role/tinnakorn-schedule-start-event-ssm-automation-role
» ⚫ Create a new role for this specific resource: ชื่อ Role ตัวอย่างนี้คือ ↓
tinnakorn-schedule-start_Amazon_EventBridge_Invoke_Start
※ตัวอย่างการตั้งชื่อ Role (ดูเพื่อเป็นแนวทาง โดยคุณสามารถตั้งชื่ออะไรก็ได้)
# ทำการลบชื่อเดิมด้านหลังตั้งแต่ "_Automation_Execution_1763111298" ออกก็จะได้เป็น "Amazon_EventBridge_Invoke_Start" # จากนั้นใส่ชื่อ EC2 Instance: "tinnakorn-schedule-start_" ของเราไว้ด้านหน้าของชื่อ Role # ก็จะได้เป็น ↓ tinnakorn-schedule-start_Amazon_EventBridge_Invoke_Start # (ชื่อนี้เป็นแค่ตัวอย่าง)
» คลิกNext
การตั้งค่า Step 4 - option Configure tags นี้ไม่ต้องตั้งค่าอะไร คลิกNext
ได้เลย
ขั้นตอน Step 5 Review and create นี้คือการตรวจสอบข้อมูลการตั้งค่า
เมื่อทำการตรวจสอบการตั้งค่าเสร็จแล้ว คลิกCreate rule
ได้เลย
เมื่อมาหน้านี้แล้ว ให้คลิกที่ชื่อ Rule ของเรา
ในส่วนนี้คือ Rule ของเรา ซึ่งจะมีข้อมูลที่เราได้ตั้งค่าไว้ในหน้านี้
กลับมาที่หน้า EC2 Instance ของเรา แล้วสังเกตการเปลี่ยนแปลงของ Instance ตามเวลาที่เราได้ระบุไว้
เมื่อ Instance state เป็น Running การ Start Instance ก็เสร็จสมบูรณ์
ในกรณีที่เราต้องการปิดการใช้งาน Instance นี้อีกครั้ง ก็สามารถ Stop Instance ด้วยตัวเองได้ปกติ
ไปที่Instance state ▼
เลือกStop instance
คลิกStop
เมื่อ Instance state เป็น Stopped การปิดการใช้งานชั่วคราวเสร็จสมบูรณ์
สรุป
ในบทความนี้ก็ได้สาธิตวิธีตั้งค่ากำหนดการ Start Instance อัตโนมัติด้วย Amazon EventBridge เรียบร้อยแล้ว ซึ่งการตั้งค่านี้ จะช่วยเพิ่มความสะดวกสบายในการทำงานให้กับเรามากยิ่งขึ้น เพราะเราสามารถกำหนดวัน เวลา ที่ต้องการ Start Instance ได้โดยไม่ต้องรอจนกว่าจะถึงวันที่ต้องการ Start EC2 Instance และไม่ต้องมาเสียเวลาเปิดการใช้งานด้วยตัวเอง
ตัวอย่างเช่น ถ้าเราต้องการใช้งานเซิร์ฟเวอร์ Instance ก่อนเวลางาน บางครั้งเรามีงานอื่นที่ต้องเตรียม แต่เราอาจจะลืมหรือไม่สะดวกที่จะ Start EC2 Instance ด้วยตัวเอง เราก็สามารถ Start EC2 Instance ด้วยการตั้งค่านี้ได้ตลอดเวลา นอกจากนี้ยังช่วยให้งานของคุณมีความราบรื่น และมีประสิทธิภาพมากยิ่งขึ้นอีกด้วย
คุณสามารถสร้าง Instance โดยตั้งค่ากำหนดการ Stop/Start Instance อัตโนมัติเฉพาะช่วงเวลาที่ต้องการใช้งานได้ ถ้าคุณเข้าใจฟังก์ชันต่างๆ ใน Service ของ AWS และสามารถใช้งาน AWS ได้เป็นอย่างดี ก็จะทำให้ลดค่าใช้จ่ายได้เป็นอย่างมาก
บทความที่เกี่ยวข้อง
- วิธีติดตั้ง Amazon Linux บน EC2 และเชื่อมต่อเซิร์ฟเวอร์ด้วยโปรแกรม PuTTy
- การติดตั้ง Python ใน Amazon Linux 2 บน EC2
- วิธีตั้งค่ากำหนดการ Stop EC2 Instance อัตโนมัติด้วย Amazon EventBridge
- วิธีการ Shutdown Windows ด้วย Schedule จาก EventBridge
- การ Shutdown ระบบปฏิบัติการ, Terminate, Stop, Restart ของ EC2